<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>Test Report</title>
    <style>body {
  font-family: Helvetica, Arial, sans-serif;
  font-size: 12px;
  /* do not increase min-width as some may use split screens */
  min-width: 800px;
  color: #999;
}

h1 {
  font-size: 24px;
  color: black;
}

h2 {
  font-size: 16px;
  color: black;
}

p {
  color: black;
}

a {
  color: #999;
}

table {
  border-collapse: collapse;
}

/******************************
 * SUMMARY INFORMATION
 ******************************/
#environment td {
  padding: 5px;
  border: 1px solid #E6E6E6;
}

#environment tr:nth-child(odd) {
  background-color: #f6f6f6;
}

/******************************
 * TEST RESULT COLORS
 ******************************/
span.passed, .passed .col-result {
  color: green;
}

span.skipped, span.xfailed, span.rerun, .skipped .col-result, .xfailed .col-result, .rerun .col-result {
  color: orange;
}

span.error, span.failed, span.xpassed, .error .col-result, .failed .col-result, .xpassed .col-result {
  color: red;
}

/******************************
 * RESULTS TABLE
 *
 * 1. Table Layout
 * 2. Extra
 * 3. Sorting items
 *
 ******************************/
/*------------------
 * 1. Table Layout
 *------------------*/
#results-table {
  border: 1px solid #e6e6e6;
  color: #999;
  font-size: 12px;
  width: 100%;
}

#results-table th, #results-table td {
  padding: 5px;
  border: 1px solid #E6E6E6;
  text-align: left;
}

#results-table th {
  font-weight: bold;
}

/*------------------
 * 2. Extra
 *------------------*/
.log:only-child {
  height: inherit;
}

.log {
  background-color: #e6e6e6;
  border: 1px solid #e6e6e6;
  color: black;
  display: block;
  font-family: "Courier New", Courier, monospace;
  height: 230px;
  overflow-y: scroll;
  padding: 5px;
  white-space: pre-wrap;
}

div.image {
  border: 1px solid #e6e6e6;
  float: right;
  height: 240px;
  margin-left: 5px;
  overflow: hidden;
  width: 320px;
}

div.image img {
  width: 320px;
}

div.video {
  border: 1px solid #e6e6e6;
  float: right;
  height: 240px;
  margin-left: 5px;
  overflow: hidden;
  width: 320px;
}

div.video video {
  overflow: hidden;
  width: 320px;
  height: 240px;
}

.collapsed {
  display: none;
}

.expander::after {
  content: " (show details)";
  color: #BBB;
  font-style: italic;
  cursor: pointer;
}

.collapser::after {
  content: " (hide details)";
  color: #BBB;
  font-style: italic;
  cursor: pointer;
}

/*------------------
 * 3. Sorting items
 *------------------*/
.sortable {
  cursor: pointer;
}

.sort-icon {
  font-size: 0px;
  float: left;
  margin-right: 5px;
  margin-top: 5px;
  /*triangle*/
  width: 0;
  height: 0;
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
}

.inactive .sort-icon {
  /*finish triangle*/
  border-top: 8px solid #E6E6E6;
}

.asc.active .sort-icon {
  /*finish triangle*/
  border-bottom: 8px solid #999;
}

.desc.active .sort-icon {
  /*finish triangle*/
  border-top: 8px solid #999;
}
</style></head>
  <body onLoad="init()">
    <script>/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


function toArray(iter) {
    if (iter === null) {
        return null;
    }
    return Array.prototype.slice.call(iter);
}

function find(selector, elem) { // eslint-disable-line no-redeclare
    if (!elem) {
        elem = document;
    }
    return elem.querySelector(selector);
}

function find_all(selector, elem) {
    if (!elem) {
        elem = document;
    }
    return toArray(elem.querySelectorAll(selector));
}

function sort_column(elem) {
    toggle_sort_states(elem);
    const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
    let key;
    if (elem.classList.contains('result')) {
        key = key_result;
    } else if (elem.classList.contains('links')) {
        key = key_link;
    } else {
        key = key_alpha;
    }
    sort_table(elem, key(colIndex));
}

function show_all_extras() { // eslint-disable-line no-unused-vars
    find_all('.col-result').forEach(show_extras);
}

function hide_all_extras() { // eslint-disable-line no-unused-vars
    find_all('.col-result').forEach(hide_extras);
}

function show_extras(colresult_elem) {
    const extras = colresult_elem.parentNode.nextElementSibling;
    const expandcollapse = colresult_elem.firstElementChild;
    extras.classList.remove('collapsed');
    expandcollapse.classList.remove('expander');
    expandcollapse.classList.add('collapser');
}

function hide_extras(colresult_elem) {
    const extras = colresult_elem.parentNode.nextElementSibling;
    const expandcollapse = colresult_elem.firstElementChild;
    extras.classList.add('collapsed');
    expandcollapse.classList.remove('collapser');
    expandcollapse.classList.add('expander');
}

function show_filters() {
    const filter_items = document.getElementsByClassName('filter');
    for (let i = 0; i < filter_items.length; i++)
        filter_items[i].hidden = false;
}

function add_collapse() {
    // Add links for show/hide all
    const resulttable = find('table#results-table');
    const showhideall = document.createElement('p');
    showhideall.innerHTML = '<a href="javascript:show_all_extras()">Show all details</a> / ' +
                            '<a href="javascript:hide_all_extras()">Hide all details</a>';
    resulttable.parentElement.insertBefore(showhideall, resulttable);

    // Add show/hide link to each result
    find_all('.col-result').forEach(function(elem) {
        const collapsed = get_query_parameter('collapsed') || 'Passed';
        const extras = elem.parentNode.nextElementSibling;
        const expandcollapse = document.createElement('span');
        if (extras.classList.contains('collapsed')) {
            expandcollapse.classList.add('expander');
        } else if (collapsed.includes(elem.innerHTML)) {
            extras.classList.add('collapsed');
            expandcollapse.classList.add('expander');
        } else {
            expandcollapse.classList.add('collapser');
        }
        elem.appendChild(expandcollapse);

        elem.addEventListener('click', function(event) {
            if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) {
                show_extras(event.currentTarget);
            } else {
                hide_extras(event.currentTarget);
            }
        });
    });
}

function get_query_parameter(name) {
    const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

function init () { // eslint-disable-line no-unused-vars
    reset_sort_headers();

    add_collapse();

    show_filters();

    sort_column(find('.initial-sort'));

    find_all('.sortable').forEach(function(elem) {
        elem.addEventListener('click',
            function() {
                sort_column(elem);
            }, false);
    });
}

function sort_table(clicked, key_func) {
    const rows = find_all('.results-table-row');
    const reversed = !clicked.classList.contains('asc');
    const sorted_rows = sort(rows, key_func, reversed);
    /* Whole table is removed here because browsers acts much slower
     * when appending existing elements.
     */
    const thead = document.getElementById('results-table-head');
    document.getElementById('results-table').remove();
    const parent = document.createElement('table');
    parent.id = 'results-table';
    parent.appendChild(thead);
    sorted_rows.forEach(function(elem) {
        parent.appendChild(elem);
    });
    document.getElementsByTagName('BODY')[0].appendChild(parent);
}

function sort(items, key_func, reversed) {
    const sort_array = items.map(function(item, i) {
        return [key_func(item), i];
    });

    sort_array.sort(function(a, b) {
        const key_a = a[0];
        const key_b = b[0];

        if (key_a == key_b) return 0;

        if (reversed) {
            return key_a < key_b ? 1 : -1;
        } else {
            return key_a > key_b ? 1 : -1;
        }
    });

    return sort_array.map(function(item) {
        const index = item[1];
        return items[index];
    });
}

function key_alpha(col_index) {
    return function(elem) {
        return elem.childNodes[1].childNodes[col_index].firstChild.data.toLowerCase();
    };
}

function key_link(col_index) {
    return function(elem) {
        const dataCell = elem.childNodes[1].childNodes[col_index].firstChild;
        return dataCell == null ? '' : dataCell.innerText.toLowerCase();
    };
}

function key_result(col_index) {
    return function(elem) {
        const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
            'Skipped', 'Passed'];
        return strings.indexOf(elem.childNodes[1].childNodes[col_index].firstChild.data);
    };
}

function reset_sort_headers() {
    find_all('.sort-icon').forEach(function(elem) {
        elem.parentNode.removeChild(elem);
    });
    find_all('.sortable').forEach(function(elem) {
        const icon = document.createElement('div');
        icon.className = 'sort-icon';
        icon.textContent = 'vvv';
        elem.insertBefore(icon, elem.firstChild);
        elem.classList.remove('desc', 'active');
        elem.classList.add('asc', 'inactive');
    });
}

function toggle_sort_states(elem) {
    //if active, toggle between asc and desc
    if (elem.classList.contains('active')) {
        elem.classList.toggle('asc');
        elem.classList.toggle('desc');
    }

    //if inactive, reset all other functions and add ascending active
    if (elem.classList.contains('inactive')) {
        reset_sort_headers();
        elem.classList.remove('inactive');
        elem.classList.add('active');
    }
}

function is_all_rows_hidden(value) {
    return value.hidden == false;
}

function filter_table(elem) { // eslint-disable-line no-unused-vars
    const outcome_att = 'data-test-result';
    const outcome = elem.getAttribute(outcome_att);
    const class_outcome = outcome + ' results-table-row';
    const outcome_rows = document.getElementsByClassName(class_outcome);

    for(let i = 0; i < outcome_rows.length; i++){
        outcome_rows[i].hidden = !elem.checked;
    }

    const rows = find_all('.results-table-row').filter(is_all_rows_hidden);
    const all_rows_hidden = rows.length == 0 ? true : false;
    const not_found_message = document.getElementById('not-found-message');
    not_found_message.hidden = !all_rows_hidden;
}
</script>
    <h1>bpm_test_res1.html</h1>
    <p>Report generated on 05-Sep-2024 at 14:37:13 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.1.0</p>
    <h2>Summary</h2>
    <p>22 tests ran in 5.43 seconds. </p>
    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="passed">10 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="failed">12 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>, <input checked="true" class="filter" data-test-result="rerun" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="rerun">60 rerun</span>
    <h2>Results</h2>
    <table id="results-table">
      <thead id="results-table-head">
        <tr>
          <th class="sortable result initial-sort" col="result">Result</th>
          <th class="sortable" col="name">Test</th>
          <th class="sortable" col="duration">Duration</th>
          <th class="sortable links" col="links">Links</th></tr>
        <tr hidden="true" id="not-found-message">
          <th colspan="4">No results found. Try to check the filters</th></tr></thead>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.25</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.06</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868723118080&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868869918720&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869033496576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869176102912&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869318709248&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869603921920&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869754916864&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869893328896&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870040129536&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870186930176&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870472142848&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870639915008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870811881472&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870958682112&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871105482752&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871373918208&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871545884672&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581875899572224&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876063150080&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876239310848&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876528717824&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876679712768&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876830707712&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876985896960&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877136891904&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877606653952&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877740871680&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877879283712&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878000918528&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878122553344&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878378405888&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878495846400&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878634258432&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878781059072&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878923665408&quot;}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2C6B40&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2C6B40&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F19C840&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F19C840&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-添加维度-高-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/addDem-post-application/json-case_data0-expect_data0-delete-sql_data0-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加维度成功&#x27; == &#x27;添加维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF39C10&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;添加维度&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/addDem&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, sql_type = &#x27;delete&#x27;, sql_data = {&#x27;delete&#x27;: &#x27;dELETE FROM uc_demension WHERE `CODE_`=&quot;requestsAddDem&quot;;&#x27;}<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/addDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 1, &#x27;name&#x27;: &#x27;requests添加的维度&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-更新维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/updateDem-put-json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;更新维度成功&#x27; == &#x27;更新维度成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 更新维度成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 更新维度成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF15340&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;维度管理&#x27;, api_name = &#x27;更新维度&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/demension/v1/dem/updateDem&#x27;, method = &#x27;put&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/updateDem, 用例数据:{&#x27;code&#x27;: &#x27;requestsAddDem&#x27;, &#x27;description&#x27;: &#x27;requestsAddDem&#x27;, &#x27;isDefault&#x27;: 0, &#x27;name&#x27;: &#x27;requestsAddDem&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;更新维度成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;更新维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.05</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-添加组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/org/addOrg-POST-json-case_data2-expect_data2-delete|select-sql_data2-demId]</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;添加组织成功&#x27; == &#x27;添加组织成功！&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 添加组织成功！</span><br/><span class="error">E                 ?       -</span><br/><span class="error">E                 + 添加组织成功</span><br/><br/>test_case\test_demo\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_demo.test_bpm.TestBPM object at 0x000001D80EF151F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80EF8D340&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80EFA5670&gt;, module_name = &#x27;组织管理&#x27;, api_name = &#x27;添加组织&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/api/org/v1/org/addOrg&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, ...}, expect_data = {&#x27;message&#x27;: &#x27;添加组织成功&#x27;}<br/>sql_type = &#x27;delete|select&#x27;<br/>sql_data = {&#x27;delete&#x27;: &#x27;delete from uc_org where CODE_=&quot;testAddOrg&quot;;&#x27;, &#x27;select&#x27;: &#x27;select ID_ from uc_demension where CODE_=&quot;requestsAddDem&quot;; &#x27;}<br/>update_key = &#x27;demId&#x27;<br/><br/>    @allure.epic(&quot;BPM项目-Demo&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_demo\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/api/org/v1/org/addOrg, 用例数据:{&#x27;code&#x27;: &#x27;testAddOrg&#x27;, &#x27;demId&#x27;: &#x27;1831581862851092480&#x27;, &#x27;exceedLimitNum&#x27;: 0, &#x27;grade&#x27;: &#x27;&#x27;, &#x27;limitNum&#x27;: 0, &#x27;name&#x27;: &#x27;测试添加的组织&#x27;, &#x27;nowNum&#x27;: 0, &#x27;orderNo&#x27;: 0, &#x27;parentId&#x27;: &#x27;0&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;添加组织成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;添加组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868723118080&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868723118080&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868869918720&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868723118080&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868869918720&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869033496576&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为空-http://36.139.193.99:8088/auth-POST-application/json-case_data1-expect_data1-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF880A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为空&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868542763008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868723118080&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581868869918720&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869033496576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869176102912&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869603921920&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869603921920&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869754916864&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869603921920&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869754916864&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869893328896&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data2-expect_data2-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D3D0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username为特殊字符&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869457121280&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869603921920&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869754916864&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581869893328896&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;#!$!@#!@#&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870040129536&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870472142848&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870472142848&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870639915008&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870472142848&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870639915008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870811881472&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username过长-http://36.139.193.99:8088/auth-POST-application/json-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D460&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870329536512&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870472142848&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870639915008&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870811881472&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminadminadminadminadminadminadminadminadmin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581870958682112&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871373918208&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871373918208&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871545884672&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">1.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871373918208&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871545884672&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581875899572224&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username短-http://36.139.193.99:8088/auth-POST-json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D670&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;a&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871235506176&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871373918208&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581871545884672&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581875899572224&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;a&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876063150080&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876528717824&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876528717824&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876679712768&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876528717824&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876679712768&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876830707712&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-username错误-http://36.139.193.99:8088/auth-POST-application/json-case_data5-expect_data5-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;账户错误或该租户未启用&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 账户错误或该租户未启用</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EF6D5E0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-username错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;, &#x27;username&#x27;: &#x27;adminxyz&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876373528576&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876528717824&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876679712768&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876830707712&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;adminxyz&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账户错误或该租户未启用&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581876985896960&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877606653952&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877606653952&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877740871680&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877606653952&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877740871680&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877879283712&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过长-http://36.139.193.99:8088/auth-post-application/json-case_data8-expect_data8-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA5280&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过长&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;post&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQraz...aEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877493407744&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877606653952&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877740871680&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877879283712&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jznbF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878000918528&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878378405888&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878378405888&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878495846400&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878378405888&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878495846400&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878634258432&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password过短-http://36.139.193.99:8088/auth-POST-application/json-case_data9-expect_data9-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == &#x27;解密密码异常，请检查RSA公钥和私钥配置&#x27;</span><br/><span class="error">E                 </span><br/><span class="error">E                 - 解密密码异常，请检查RSA公钥和私钥配置</span><br/><span class="error">E                 + 账号或密码错误</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA51C0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password过短&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;123456&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}, expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None<br/>update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878260965376&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878378405888&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878495846400&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878634258432&quot;}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;123456&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;解密密码异常，请检查RSA公钥和私钥配置&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581878781059072&quot;}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F194740&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F194740&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F1EBDC0&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F1EBDC0&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F237980&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F237980&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2AF180&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2AF180&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password错误-http://36.139.193.99:8088/auth-POST-application/json-case_data10-expect_data10-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;账号或密码错误&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2B8E00&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2B8E00&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA50A0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;登录系统&#x27;<br/>level = &#x27;中&#x27;, title = &#x27;反向用例-password错误&#x27;, url = &#x27;http://36.139.193.99:8088/auth&#x27;, method = &#x27;POST&#x27;, mime = &#x27;application/json&#x27;<br/>case_data = {&#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;, &#x27;username&#x27;: &#x27;admin&#x27;}<br/>expect_data = {&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2CCF40&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2CCF40&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2DDEC0&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2DDEC0&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F2EA200&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F2EA200&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F23CEC0&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F23CEC0&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="rerun results-table-row">
        <tr>
          <td class="col-result">Rerun</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-刷新token-高-正向用例-http://36.139.193.99:8088/refresh-GET-None-None-expect_data11-None-None-None]</td>
          <td class="col-duration">0.01</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>&gt;               assert expect_data[key] == res.json().get(key)<br/><span class="error">E               AssertionError: assert &#x27;刷新token成功&#x27; == None</span><br/><span class="error">E                +  where None = &lt;built-in method get of dict object at 0x000001D80F109080&gt;(&#x27;message&#x27;)</span><br/><span class="error">E                +    where &lt;built-in method get of dict object at 0x000001D80F109080&gt; = {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...}.get</span><br/><span class="error">E                +      where {&#x27;account&#x27;: &#x27;admin&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True, &#x27;token&#x27;: &#x27;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&#x27;, ...} = json()</span><br/><span class="error">E                +        where json = &lt;Response [200]&gt;.json</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:61: AssertionError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>self = &lt;apiAutoTest_v3.test_case.test_lao_zhang.test_bpm.TestBPM object at 0x000001D80EFA54F0&gt;<br/>fix_db = &lt;apiAutoTest_v3.common.db.DB object at 0x000001D80F18C100&gt;<br/>fix_req = &lt;apiAutoTest_v3.request_method.request_method.RequestMethod object at 0x000001D80F18C190&gt;, module_name = &#x27;认证接口&#x27;, api_name = &#x27;刷新token&#x27;<br/>level = &#x27;高&#x27;, title = &#x27;正向用例&#x27;, url = &#x27;http://36.139.193.99:8088/refresh&#x27;, method = &#x27;GET&#x27;, mime = None, case_data = None<br/>expect_data = {&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, sql_type = None, sql_data = None, update_key = None<br/><br/>    @allure.epic(&quot;BPM项目-老张&quot;)<br/>    # @allure.feature(&quot;模块名称&quot;)<br/>    # @allure.story(&quot;接口名称&quot;)<br/>    # @allure.title(&quot;用例标题&quot;)<br/>    # @allure.severity(&quot;用例等级&quot;)<br/>    @pytest.mark.parametrize(&quot;module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key&quot;, excel.get_data())<br/>    def test_bpm(self, fix_db, fix_req, module_name, api_name, level, title, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):<br/>        allure.dynamic.feature(module_name)<br/>        allure.dynamic.story(api_name)<br/>        allure.dynamic.title(title)<br/>        allure.dynamic.severity(level)<br/>    <br/>        # 判断sql语句的类型是否为delete<br/>        if sql_type == &quot;delete&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>        # 判断sql语句类型是否为select<br/>        elif sql_type == &quot;select&quot;:<br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 判断sql语句的类型是否为select|delete 或者为 delete|select<br/>        elif sql_type == &quot;select|delete&quot; or sql_type == &quot;delete|select&quot;:<br/>            # 使用DB类对象调用delete方法执行删除的sql语句，DB类对象===fix_db自定义固件<br/>            fix_db.delete(sql_data[&#x27;delete&#x27;])<br/>    <br/>            # 使用DB类对象调用select方法执行查询的sql语句， 并获取查询结果，DB类对象===fix_db自定义固件<br/>            select_result = fix_db.select(sql_data[&#x27;select&#x27;])<br/>            # 将查询结果更新到用例数据中<br/>            case_data[update_key] = select_result<br/>    <br/>        # 使用RequestMethod类对象发送请求<br/>        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)<br/>    <br/>        # 断言<br/>        try:<br/>            for key in expect_data.keys():<br/>                assert expect_data[key] == res.json().get(key)<br/>        except AssertionError:<br/>            log.error(f&quot;断言失败，接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}&quot;)<br/>&gt;           raise AssertionError(&quot;断言失败&quot;)<br/><span class="error">E           AssertionError: 断言失败</span><br/><br/>test_case\test_lao_zhang\test_bpm.py:64: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjMsImlhdCI6MTcyNTUxODEyM30.OJcSOQ4XMFFq5bTK9Q2otBn_A3s3ZI1fdy0Jpty2-Nj8pT9BsuZKagFdWFwp-rjF26WrdCbSneKb0M6mjar-Ug&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/> -------------------------------Captured log call-------------------------------- <br/>ERROR    张三:test_bpm.py:63 断言失败，接口url为:http://36.139.193.99:8088/refresh, 用例数据:None, 期望数据:{&#x27;message&#x27;: &#x27;刷新token成功&#x27;}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjQsImlhdCI6MTcyNTUxODEyNH0.YNvXrTQC6dijoTQG31G0qlWhs9B30v7J0v1nXzMVjoqi3NBaqHU6r8o8Q6-DVOlKyETL8cA8ReiJBNEhZpM2EA&quot;,&quot;username&quot;:&quot;admin&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-用户加入组织-高-正向用例-http://36.139.193.99:8088/api/org/v1/orgUsers/addUsersForOrg-POST-query-case_data3-expect_data3-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/api/org/v1/orgUsers/addUsersForOrg, 用例数据:{&#x27;orgCode&#x27;: &#x27;testAddOrg&#x27;, &#x27;accounts&#x27;: &#x27;admin,guest&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;加入成功&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;加入成功&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-保存组织参数-中-正向用例-http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams-POST-query|json-case_data4-expect_data4-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams, 用例数据:{&#x27;query&#x27;: {&#x27;orgCode&#x27;: &#x27;testAddOrg&#x27;}, &#x27;body&#x27;: [{&#x27;alias&#x27;: &#x27;hxxmts&#x27;, &#x27;value&#x27;: &#x27;项目中没有关系户&#x27;}]}, 期望数据:{&#x27;message&#x27;: &#x27;保存组织参数成功！&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;保存组织参数成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[组织管理-删除组织-中-正向用例-http://36.139.193.99:8088/api/org/v1/org/deleteOrg-POST-form-testAddOrg-expect_data5-None-None-None]</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/api/org/v1/org/deleteOrg, 用例数据:testAddOrg, 期望数据:{&#x27;message&#x27;: &#x27;删除组织成功！&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;删除组织成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_demo/test_bpm.py::TestBPM::test_bpm[维度管理-根据维度编码删除维度-中-正向用例-http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds-delete-query-case_data6-expect_data6-select-sql_data6-ids]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds, 用例数据:{&#x27;ids&#x27;: &#x27;1831581862851092480&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;删除维度成功！&#x27;}, 服务器返回数据:{&quot;state&quot;:true,&quot;message&quot;:&quot;删除维度成功！&quot;,&quot;value&quot;:&quot;&quot;,&quot;code&quot;:200}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_dependency/test_bpm_1_login.py::TestBPMLogin::test_login</td>
          <td class="col-duration">0.04</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="empty log">No log output captured.</div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_dependency/test_bpm_2_dem.py::TestBPMDem::test_add_dem</td>
          <td class="col-duration">0.49</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="empty log">No log output captured.</div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_dependency/test_bpm_3_org.py::TestBPMOrg::test_add_org</td>
          <td class="col-duration">0.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="empty log">No log output captured.</div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-高-登录的正向用例-http://36.139.193.99:8088/auth-POST-application/json-case_data0-expect_data0-None-None-None]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;bF6N3L93cX8pV6x2yEqxNjwIIPaEOYw9bNI5GuIY4g9MeoFyPFPL5WteHaV0LcxQqmDJWlhuCRMXzAPvrFcxJrA8BgGjJpmB1WMrQrazIJPbWbCfmDit2s2jzn+DRerVlYIFojDM96y24drEniwWzHtaJKiWoc7LGL1csNmokvQ=&#x27;}, 期望数据:{&#x27;username&#x27;: &#x27;超级管理员&#x27;, &#x27;account&#x27;: &#x27;admin&#x27;, &#x27;userId&#x27;: &#x27;1&#x27;, &#x27;expiration&#x27;: 86400, &#x27;loginStatus&#x27;: True}, 服务器返回数据:{&quot;token&quot;:&quot;eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjU2MDQ1MjEsImlhdCI6MTcyNTUxODEyMX0.fvHipHd1jVRGtq__eL3TeaPDRHNyHotq_o5Myi28TWWTJ1BaWlAGh38YmXFnbgBA4WhWsC_36geE2QQHXDxQag&quot;,&quot;username&quot;:&quot;超级管理员&quot;,&quot;account&quot;:&quot;admin&quot;,&quot;userId&quot;:&quot;1&quot;,&quot;expiration&quot;:86400,&quot;loginStatus&quot;:true,&quot;userAttrs&quot;:{&quot;tenantId&quot;:&quot;-1&quot;}}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password为空-http://36.139.193.99:8088/auth-POST-application/json-case_data6-expect_data6-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账号或密码错误&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877292081152&quot;}<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">test_case/test_lao_zhang/test_bpm.py::TestBPM::test_bpm[认证接口-登录系统-中-反向用例-password为特殊字符-http://36.139.193.99:8088/auth-POST-application/json-case_data7-expect_data7-None-None-None]</td>
          <td class="col-duration">0.02</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     张三:test_bpm.py:66 断言成功，接口url为:http://36.139.193.99:8088/auth, 用例数据:{&#x27;username&#x27;: &#x27;admin&#x27;, &#x27;password&#x27;: &#x27;#!$!@#!@#&#x27;}, 期望数据:{&#x27;message&#x27;: &#x27;账号或密码错误&#x27;}, 服务器返回数据:{&quot;state&quot;:false,&quot;message&quot;:&quot;账号或密码错误&quot;,&quot;code&quot;:200,&quot;logId&quot;:&quot;1831581877405327360&quot;}<br/></div></td></tr></tbody></table></body></html>